package cn.sxw.ld.module.pet.controller;


import cn.sxw.ld.common.dto.R;
import cn.sxw.ld.common.utils.MsgUtils;
import cn.sxw.ld.module.member.pojo.Member;
import cn.sxw.ld.module.pet.pojo.Pet;
import cn.sxw.ld.module.pet.service.PetService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.jetbrains.annotations.Nullable;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.crypto.MacSpi;
import java.lang.reflect.Type;
import java.util.List;
import java.util.Map;

/**
 * @author: SXW
 * @since: 2025年02月25日 13:48
 * @desc:
 */
@Slf4j
@RestController
@RequestMapping("/pet")
public class PetController {

    @Autowired
    private PetService petService;


    /**
     * 获取分页
     *
     * @param page
     * @param pageSize
     * @param phone
     * @param petName    宠物名
     * @param memberName 客户名
     * @return
     */
    @GetMapping("/page")
    public R<Page> Page(int page, int pageSize, String phone, String petName, String memberName) {
        try {
            Page pageInfo = petService.getPage(page, pageSize, phone, petName, memberName);
            return pageInfo != null ?
                    R.success(pageInfo) :
                    R.error("系统繁忙，请稍后再试~~");
        } catch (Exception e) {
            log.error("宠物获取分页错误:'\n'{}", e.getMessage());
            return R.error("系统繁忙，请稍后再试~~");
        }
    }

    /**
     * 保存一个宠物
     *
     * @param pet
     * @return
     */
    @PostMapping()
    public R<String> add(@RequestBody Pet pet) {
        try {
            return MsgUtils.getMsg(petService.addPet(pet));
        } catch (Exception e) {
            log.error("添加错误:'\n'{}", e.getMessage());
            return R.error("系统繁忙，请稍后再试~~");
        }
    }

    /**
     * 根据Id获取宠物信息
     *
     * @param id
     * @return
     */
    @GetMapping("/{id}")
    public R<Pet> getById(@PathVariable Long id) {
        try {
            return R.success(petService.getById(id));
        } catch (Exception e) {
            log.error("根据Id获取宠物信息错误:'\n'{}", e.getMessage());
            return R.error("系统繁忙，请稍后再试~~");
        }
    }

    /**
     * 修改宠物信息
     *
     * @param pet
     * @return
     */
    @PutMapping()
    public R<String> updatePet(@RequestBody Pet pet) {
        try {
            return MsgUtils.getMsg(petService.updateCheck(pet));
        } catch (Exception e) {
            log.error("修改宠物信息错误:'\n'{}", e.getMessage());
            return R.error("系统繁忙，请稍后再试~~");
        }
    }

    @DeleteMapping
    public R<String> deletePet(@RequestParam List<Long> ids) {
        try {
            return petService.batchDeletePets(ids) ?
                    R.success("删除成功！") :
                    R.error("系统繁忙，请稍后再试~~");
        } catch (Exception e) {
            log.error("删除:'\n'{}", e.getMessage());
            return R.error("系统繁忙，请稍后再试~~");
        }
    }
}
